<?php

/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018-8-9
 * Time: 下午 11:02
 */
define('TEMPLATE_ROOT', '/view/template/');

class Author
{
    private $config;

    /*初始化*/
    function __construct()
    {
        $this->config = require getAbsolutePath(__DIR__, '../config/config.php');
    }

    /*view:渲染函数*/
    protected function render($template, array $var = array())
    {
        extract($var);   // 抽取数组中的变量
        ob_end_clean(); //关闭顶层的输出缓冲区内容
        ob_start();     // 开始一个新的缓冲区
        require TEMPLATE_ROOT . $template . '.html';  //加载视图view
        $content = ob_get_contents();             // 获得缓冲区的内容
        ob_end_clean();           // 关闭缓冲区

        //ob_end_flush();      // 这个是直接输出缓冲区的内容了，不用再次缓存起来。
        ob_start();            //开始新的缓冲区，给后面的程序用
        return $content;       // 返回文本，此处也可以字节echo出来，并结束代码。
    }

    /*view:验证登录页*/
    public function fetchLogin($param = null)
    {
        //验证该子系统是否登录
//        session_destroy();
        if (isset($_SESSION['username']) && isset($_SESSION['stoken'])) {
            header("Refresh:0;url=" . $this->config['website']);
        } else {
            //未登录
            if ($param == null) {
                //无参说明A应用请求身份验证
                header("Refresh:0;url=" . $this->config['author']);
            } else {
                //有参说明身份验证中心返回的登陆信息：需要注入本地session
                $param = json_decode($param);
                $_SESSION['username'] = $param->username;
                $_SESSION['stoken'] = $param->stoken;
                header("Refresh:0;url=" . $this->config['login']);
            }
        }
    }

    /*登陆检测*/
    public function fetchIsLogin()
    {
        if ($_SESSION['username'] && $_SESSION['stoken']) {
            return true;
        } else {
            return false;
        }
    }

    /*验证测试*/
    public function fetchTest()
    {
        if ($this->fetchIsLogin()) {
            $this->fetchIndex();
        } else {
            $data = array(
                'login' => $this->config['author'],
            );
            echo $this->render('test', $data);
        }
    }

    /*成功测试*/
    public function fetchIndex()
    {
        $data = array(
            'logout' => $this->config['logout']
        );
        echo $this->render('index', $data);
    }

    /*测试提示*/
    public function fetchTip()
    {
        echo "未知应用请求";
    }
    /*测试提示*/
    public function fetchLogout()
    {
        session_destroy();
    }
}